package com.demo.controller;

import com.alibaba.fastjson.JSON;
import com.demo.model.entity.es.OrderHeader;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.List;

/**
 * 请求参数校验
 * @author K
 */
@Slf4j
@Validated
@RestController
public class ValidateController {

    /**
     * 校验订单号不能为空和校验对象两个字段不能同时为空
     * @param orderHeader 请求实体
     * @return 返回订单号
     */
    @PostMapping("/validate/object")
    public String validate(@RequestBody @Validated OrderHeader orderHeader) {
        log.info("validate对象：{}", JSON.toJSONString(orderHeader));
        return orderHeader.getOrderSn();
    }

    /**
     * 如果要校验集合里的对象，被校验的参数必须使用@Valid，类必须加上@Validated
     * @param orderHeaders 请求参数列表
     * @return 返回json对象
     */
    @PostMapping("/validate/list")
    public String validateList(@RequestBody @Valid List<OrderHeader> orderHeaders) {
        log.info("validate集合：{}", JSON.toJSONString(orderHeaders));
        return JSON.toJSONString(orderHeaders);
    }
}
